package xyz.riceball.factory;

/**
 * <p>
 *
 * </p>
 *
 * @author xiaovcloud
 * @since 2020/06/29 19:25
 */
public interface BeanFactory {
    /**
     * 获取Bean对象
     *
     * @param beanName bean的名字
     * @return 对象
     * @throws Exception 。
     */
    Object getBean(String beanName) throws Exception;

    /**
     * 获取Bean对象
     *
     * @param beanName     bean名字
     * @param requiredType 需要的类型
     * @param <T>          泛型
     * @return 返回对象
     * @throws Exception 。
     */
    <T> T getBean(String beanName, Class<T> requiredType) throws Exception;

    /**
     * 获取Bean对象
     *
     * @param requiredType 需要的类型
     * @param <T>          泛型
     * @return 返回对象
     * @throws Exception 。
     */
    <T> T getBean(Class<T> requiredType) throws Exception;

    /**
     * 是否包含bean对象
     *
     * @param beanName bean的名字
     * @return 返回对象
     * @throws Exception 。
     */
    boolean containsBean(String beanName) throws Exception;

}
